home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / modelers / geomview / source.lha / Geomview / include / winged_edge.h < prev   
C/C++ Source or Header  |  1993-02-04  |  1KB  |  58 lines

  1. #ifndef _winged_edge_
  2. #define _winged_edge_
  3.  
  4. #ifndef _proj_matrix_
  5. #define _proj_matrix_
  6.  
  7. typedef double proj_matrix[4][4];
  8. typedef double point[4];
  9.  
  10. #endif
  11.  
  12. typedef struct WEvertex {
  13.     double        x[4];    /* coordinates (x[3] == 1) */
  14.     double        dist;    /* distance from slicing plane (used locally) */
  15.     int        ideal;    /* is this an ideal vertex (used locally) */
  16.     struct WEvertex    *next;
  17. } WEvertex;
  18.  
  19. typedef struct WEedge {
  20.     struct WEvertex    *v0,    /* tail */
  21.             *v1;    /* tip  */
  22.     struct WEedge    *e0L,    /* back left   */
  23.             *e0R,    /* back right  */
  24.             *e1L,    /* front left  */
  25.             *e1R;    /* front right */
  26.     struct WEface    *fL,    /* left face  */
  27.             *fR;    /* right face */
  28.     struct WEedge    *next;
  29. } WEedge;
  30.  
  31. typedef struct WEface {
  32.     int                order;
  33.     int                fill_tone;
  34.     struct WEedge    *some_edge;
  35.     proj_matrix        group_element;
  36.     struct WEface    *inverse;
  37.     struct WEface    *next;    /* general use */
  38.     struct WEface    *prv;    /* used for clean and dirty lists */
  39.     struct WEface    *nxt;
  40. } WEface;
  41.  
  42. typedef struct {
  43.     int            num_vertices,
  44.                 num_edges,
  45.                 num_faces;
  46.     WEvertex    *vertex_list;
  47.     WEedge        *edge_list;
  48.     WEface        *face_list;
  49.     WEface        dirty0,    /* dummy faces to serve as start and    */
  50.                 dirty1,    /* finish of doubly linked lists        */
  51.                 clean0,
  52.                 clean1,
  53.                 pending0,
  54.                 pending1;
  55. } WEpolyhedron;
  56.  
  57. #endif
  58.